In [1]:
# windows only hack for graphviz path 
import os
for path in os.environ['PATH'].split(os.pathsep):
    if path.endswith("Library\\bin"):
        os.environ['PATH']+=os.pathsep+os.path.join(path, 'graphviz')

In [2]:
from PIL import Image
import numpy as np

In [3]:
import gzip
import pickle
with gzip.open("../Week02/mnist.pkl.gz", 'rb') as f:
    train_set, validation_set, test_set = pickle.load(f, encoding='latin1')

In [4]:
train_X, train_y = train_set
validation_X, validation_y = validation_set
test_X, test_y = test_set

In [5]:
from IPython.display import display
def showX(X):
    int_X = (X*255).clip(0,255).astype('uint8')
    # N*784 -> N*28*28 -> 28*N*28 -> 28 * 28N
    int_X_reshape = int_X.reshape(-1,28,28).swapaxes(0,1).reshape(28,-1)
    display(Image.fromarray(int_X_reshape))
# 訓練資料, X 的前 20 筆
showX(train_X[:20])
print(train_y)


[5 0 4 ..., 8 4 8]

Q

看一下 mnist 資料


In [ ]:

開始 Tensorflow

Q

  • import tensorflow 和 tfdot
  • 建立 tensorflow 常數
  • 建立一些運算式
  • 查看節點

In [ ]:

Q

  • 跟著 01 的 ipynb 步驟執行
  • 試試看將 numpy ndarray 轉成 tf.constant
  • 建立一個 matrix1 和 matrix2 逐項相乘的節點(猜一下是 tf.什麼)
  • tf.reset_default_graph() 清掉 default graph 看看,會發生什麼事情?
  • 再跑一下 tfdot 看看

In [ ]:

Session

如果圖是靜態的描述操作,動態的狀態就是 Session

Q

  • 建立 session
  • 用 context manager 的寫法
  • 用 numpy 檢查結果
  • 把前面所有的 operation 都跑一遍

In [ ]:

Softmax regression

基本上就是用 $ e ^ {W x +b} $ 的比例來計算機率

其中 x 是長度 784 的向量(圖片), W 是 10x784矩陣,加上一個長度為 10 的向量。 算出來的十個數值,依照比例當成我們預估的機率。

Q

跟著建立 softmax regression 的模型


In [ ]:

Multilayer Convolutional Network